1. Field of the Invention
Embodiments of the present invention generally relate to cluster resource management and, more particularly, to a method and apparatus for optimizing resource utilization within a cluster and facilitating high availability for an application.
2. Description of the Related Art
In a typical computing environment, small to large enterprises utilize various virtualization techniques to host mission critical applications. For example, one or more virtual machines may be installed on one or more physical machines (e.g., a computer, a server and/or the like). Further, the virtual machines are abstract representations of the physical machines and executes like a real physical machine. As such, the mission critical applications (hereinafter, the applications) are required to run continuously, and uninterruptedly. In other words, the applications need to be highly available.
In particular, the one or more virtual machines are linked to each other to form a cluster to provide application services to one or more client computers. As such, certain failures may occur within hardware devices or software components within the cluster. For example, a hard disk of a particular physical machine, which hosts a particular virtual machine, may crash. As a result, the application running on the virtual machine may not operate properly. In such instances, the application is failed over to another virtual machine in order to facilitate high availability of the application.
Currently, clustering software may be employed to manage the virtual machines and failover the applications from one virtual machine to another virtual machine within the cluster. Such clustering software needs to continuously track a state of each virtual machine within the cluster to determine whether a certain virtual machine is alive or dead. In particular, the clustering software sends Transmission Control Protocol/Internet Protocol (TCP/IP) heartbeats from a virtual machine to each of the nodes indicating either that the virtual machine is operational or non-operational. In such instance, the application may be failed over from one virtual machine to another virtual machine in case of any failure. However, if the virtual machine is powered off, no heartbeat is communicated and the virtual machine is considered to be dead. Hence, the application cannot be migrated to the powered off virtual machine. As a result, the clustering software requires each and every virtual machine within the cluster to be in a running state. Such a requirement wastes valuable computer resources.
Therefore, there is a need in the art, for a method and apparatus for optimizing resource utilization within a cluster and facilitating high availability for an application.